alf.nu random4 Übung, was ist die Antwort?

8

Ich habe auf dieser Seite gespielt und bin beim Problem random4 hängengeblieben.

Im Grunde ist das Problem das folgende.

%Vor%

Welcher Wert von x sollte an random4.test übergeben werden, damit true zurückgegeben wird?

Beachten Sie, dass sich der Code hier geringfügig von der verlinkten Seite unterscheidet. Das liegt daran, dass wir nicht Zugriff auf die Variable rand haben, und ich möchte dies ausdrücklich klarstellen.

    
Barbu Barbu 13.03.2017, 15:09
quelle

4 Antworten

4

Math.random() kann vorhersehbar sein, was ausgenutzt werden kann. In der Theorie. Die ES6 Spezifikation sagt

  

Gibt einen Zahlenwert mit positivem Vorzeichen, größer als oder gleich 0, aber kleiner als 1, zufällig oder pseudozufällig mit ungefähr gleichmäßiger Verteilung über diesen Bereich unter Verwendung eines implementierungsabhängigen Algorithmus oder einer Strategie zurück . Diese Funktion benötigt keine Argumente.

(Hervorhebung von mir.)

In der Praxis verwenden die meisten modernen Browser xorshift128 + ( Chrome , Firefox , Safari ). Ihre Implementierung ist eher kurz und kann relativ einfach verstanden werden. Sehen Sie sich diese verwandte Frage an.

Können wir diese Implementierung angreifen und Werte in der Sequenz vorhersagen oder versuchen, vorherige Werte herauszufinden? Laut Security.SX haben wir kann . Wir können wirklich . Es ist definitiv nicht einfach, aber möglich.

Ich weiß nicht, ob dies wirklich zur Lösung der verknüpften Übung verwendet werden kann. In der Theorie könnte es.

Eine Alternative könnte sein, etwas hineinzugeben, das immer gleich einer beliebigen Zahl im Vergleich dazu ist. Überladen Sie also die strenge Gleichheit === Operator. Leider unterstützt JavaScript, soweit ich weiß, nicht das Überladen von Operatoren. Sie können betrügen und die Nachbearbeitung verwenden (kann nicht auf der verknüpften Seite verwendet werden) oder ", aber diese Herausforderung ist keine von ihnen, da wir Primitive haben, die mit dem strikten Gleichheitsoperator verglichen werden - dass man nicht Casting oder valueOf macht.

    
Just a student 19.03.2017 11:10
quelle
0

Übergeben Sie einfach die Variable rand , die Sie bereits deklariert haben:

%Vor%

rand ist gleich x , was gleich rand ist.

%Vor%
    
James Donnelly 16.03.2017 13:27
quelle
0

Diese Frage dient dem Zweck des Lernens und um Sie dazu zu bringen, das Konzept zu verstehen.

Die einzige Zahl, die rand entspricht, ist in diesem Fall rand . Wenn Sie also rand an die Funktion übergeben als x erhalten Sie den gleichen Wert wie rand .

Um das zu testen, rufen Sie einfach die Funktion in Ihrem console.log auf und es würde true zurückgeben.

%Vor%     
maytham-ɯɐɥʇʎɐɯ 16.03.2017 14:08
quelle
0

Versuche das immer noch, aber es könnte ähnlich sein wie

%Vor%

Obwohl die Funktion selbst gleich ihrem Rückgabewert sein muss, ist das der Teil, über den ich mich nicht sicher bin

Ссылка

Hilft hier nicht

    
exussum 22.03.2017 20:11
quelle

Tags und Links